package array


func totalFruit(fruits []int) int {
	// 只有 2 个篮子， 当碰到不属于当前篮子的水果类型，就停止
	// = 返回 至多只有两种元素的最长子串的长度
	i := 0
	ans := 0
	cnt := map[int]int{}

	for j, x := range fruits {
		cnt[x]++
		for len(cnt) > 2 {
			y := fruits[i]
			cnt[y]--
			if cnt[y] == 0 {
				delete(cnt, y)
			}
			i++
		}
		ans = max(ans, j - i + 1)
	}

	return ans
}